跳到主要内容

package.json 中 ~ 和 ^ 的区别

· 阅读需 2 分钟

版本号的一般格式是:

3.4.5 ==》主版本号.次版本号.补丁版本号

每当在项目下进行 npm install package 的时候都会往 package.json 中的 devDependencies 或者 dependencies 写入插件信息(插件名和版本号),版本号前面可能带有 ~^

  • 指定版本:比如 `3.4.5,遵循 "大版本.次要版本.小版本" 的格式规定,安装时只安装指定版本。

  • 波浪号+指定版本:比如 `~3.4.5,表示安装 3.4.x 的最新版本(不低于 3.4.5),但是不安装 3.5.x,也就是说安装时不改变大版本号和次要版本号。

  • 插入号+指定版本:比如 ˆ3.4.5,表示安装 3.x.x 的最新版本(不低于 3.4.5),但是不安装 4.x.x,也就是说安装时不改变大版本号。

注意

需要注意的是,如果大版本号为 0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。

当你发现本地代码与其他机器代码出现不一样的表现的时候,先从 git 记录确定这个插件版本是否自动更新过,如果是,或将代码向上兼容,或锁定旧版版本号。